Cloud computing refers to the hardware, system software, and applications delivered as services over the Internet. Cloud computing can be defined as data centers plus a layer of system software services designed to support creating and scalable deployment of application services. The Software-as-a-Service (SaaS) model represents applications that are accessible from various client devices through a thin client interface such as a web browser. Platform-as-a-Service (PaaS) is another category of cloud computing solutions that gives developers the tools to build and host web applications. Another level of cloud-computing solution is Infrastructure-as-a-Service (IaaS), which offers web-based access to storage and computing power. The consumer does not need to manage or control the underlying cloud infrastructure but has control over the operating system, storage, and deployed applications. To deliver highly available and flexible services (i.e., computation as a service), and owing to the maturity of virtual technology, Virtual Machines (VMs) are used as a standard for object deployment in the cloud. When an application is built on top of a PaaS offering, the application developers that maintain the application need access to the underlying infrastructure. Direct access to the underlying infrastructure in a PaaS environment is usually given to a defined number of users, such as platform operators. Monitoring systems help administrators to identify resource bottlenecks or problems and take the required action.
During the development phase, it is a common practice to insert logging statements within the code to produce informative logs at runtime that can be helpful for troubleshooting or for analysis purposes. Logging is a process of creating and storing permanent records of events for a particular system or software application that can be reviewed, printed, and analyzed. These records can contain short messages, the source of the records, timestamps of the events, log levels specifying the importance of the records, etc. Log messages can include a detailed sequence of statements that describe the events happening during an operation as they are executed. Logger objects may have predefined levels that specify the granularity that will be applied when logging messages in log files. A logging configuration can be defined for a particular software application or a component. The logging configuration may define the log levels that will be applied, while the software application or component is running.
Since version 1.4, Java® itself comes with the capable logging package, java.util.logging (Java® Logging framework), which enables a Java® Virtual Machine (JVM)-wide logging configuration shared by all applications running in the JVM. The Java® logging framework is a logging package for the Java® Platform that defines some log levels, e.g., fatal, error, warning, info, debug, trace, others. Based on the log level and the events that occur during the execution of the application, log messages are generated and stored as logged data (e.g. in log files). Log messages can be used not only by application developers, but also by the system administrators that identify problems in the system operations.
Logging relevant application details at runtime is a practice that has been followed since the early days of programming It is essential to keep logs during the whole execution of a given software application or a system. Log messages are very helpful during the maintenance process of an application. The log levels defined for logger objects denote the level of importance or relevance of a certain message. This is also applicable to SaaS solutions. To retrieve the logged data for an application deployed on a PaaS solution, the underlying cloud infrastructure needs to be accessed. When an event has occurred and troubleshooted is necessary, the log messages can be reviewed. If the information received from the log messages is not enough for the troubleshooting tasks, the log level for the logger object may be changed accordingly. This way, when the event occurs again, a large portion of log messages will be logged in the log file with detailed information that can help for the resolution of the issue.